示例:使用 OPC UA PubSub SL 图书馆
产品:CODESYS OPC UA PubSub SL
这个 OPC UA PubSub SL Example.project
示例显示了如何使用 OPC UA PubSub SL 用于通过 OPC UA 基金会定义的 Pub/Sub 协议交换消息的库。
该软件包还包含第二个示例: PubSubDataSet.project
。它显示了如何使用 OPC UA PubSub SL 库以提供不同的数据集并将它们连接到 GVL 实例。
描述
除了客户端/服务器通信之外,通过 OPC UA Pub/Sub 协议进行的通信还提供了一种附加功能,可以根据 OPC UA 基金会的规则在网络订阅者之间交换数据。
数据的结构(DataSet
) 可以自由定义,并由发送方和接收方事先约定。这消除了传输额外(元)数据的需要。数据传输的帮助下 OPC UA PubSub SL 根据 UADP 定义的规则通过 UDP/IP 库。
发布者将其数据发布给未知数量的订阅者。结果,发送者和接收者彼此不认识。这就是为什么接收者的数量也不会对发送者产生任何影响。由于协议的性质,无法通过该协议发送对发送方的消息是否已到达接收方的答复。如有必要,必须以特定于应用程序的方式管理此类回复。
数据根据 OPC UA 基金会的规则以二进制格式传输。这 OPC UA PubSub SL
库处理 IEC 数据类型与相应 OPC UA 数据类型之间的转换。
实施遵循以下配置文件:
Publisher: PubSub Publisher UADP Periodic Fixed Settings
Subscriber: PubSub Subscriber UADP Periodic Fixed Settings
消息长度限制为 1,500 字节 (MTU)(不支持分块网络消息)。只要时间敏感网络的规则仍然不可用,就无法满足硬实时条件。然而,实施 OPC UA PubSub SL
库尝试将抖动保持尽可能低。
该库包括以下功能块:
DataSet
:定义一个
DataSet
信息Configuration
:管理共享资源,例如连接或组
RootDiagnostics
:使用高级诊断数据进行通知
Connection
:管理与发布者和订阅者的连接
ConnectionDiagnostics
:通知有关连接的诊断数据(
Connection
)ReaderGroup
:管理
Reader
功能块(从创建 NetworkMessageDataSet
消息)ReaderGroupDiagnostics
:通知有关的诊断数据
ReaderGroup
Reader
:管理
DataSet
功能块(订阅者)ReaderDiagnostics
:通知有关诊断数据
Reader
功能块WriterGroup
:管理
Writer
功能块(从创建 NetworkMessageDataSet
消息)WriterGroupDiagnostics
:通知有关的诊断数据
WriterGroup
Writer
:管理着一个
DataSet
功能块(发布者)WriterDiagnostics
:通知有关诊断数据
Writer
功能块
![]() |
支持的功能
根据 OPC 10000-14 发布/订阅消息:OPC 统一架构第 14 部分:PubSub 版本 1.04
NetworkMessage 的最大大小:1,500 字节
当前数据包大小和有效负载可以通过各自的ReaderGroup/WriterGroup和的配置来配置
DataSet
功能块。支持各自的后台任务
Connection
功能块支持以下配置文件:
Publisher: PubSub Publisher UADP Periodic Fixed Settings
Subscriber: PubSub Subscriber UADP Periodic Fixed Settings
附加信息
这 Device_1
应用程序展示了如何读取 NetworkMessage
。
这 Device_2
应用程序展示了如何通过所包含的功能块发送消息。
硬件
你需要两个 CODESYS 通过支持 UDP 多播的网络连接的 PLC。
在项目中,通过更新使设备配置适应设备
Device_1
和Device_2
到所使用的硬件。
项目中的自定义
在中设置IP地址
GlobalIP
GVL 到您已配置的硬件。您将在以下位置找到此 GVL POU 区域。将多播地址设置为网络中的空闲地址。
注意:如果您不在专用网络中,请请求网络管理员为您分配一个免费地址。
设置端口。默认端口 4840 是 OPC UA PubSub 的推荐端口。
登录两个控制器并启动应用程序。
启动发送者和接收者:
Device_2: PLC_PRG.xEnable := TRUE
Device_1: Communication_PRG.xEnable := TRUE
在接收器一侧,您现在应该看到正弦值如何变化。您可以手动更改发送方中的其他值并查看接收方中的更改。
添加一个变量到 DataSet
已经发送了。
延长
SensorDataSet._aIndex
通过一项。选择任何数据类型。在
SensorDataSet.Init
, 适配版本DataSet
通过更新日期条目。在里面
PLC_PRG
发送方的程序,创建所选数据类型的变量。赋值txSensorDataSet.PrepareValues
到变量。在
rxSensorDataSet.PrepareValues
,在接收端重复此步骤。这里也预先创建一个相同类型的新变量。执行新的下载。
新变量也应该被传输。
![]() |
系统要求和限制
编程系统 | CODESYS Development System (版本 3.5.17.0 或更高版本) |
运行时系统 | CODESYS Control Win (版本3.5.14.0) 注意根据相应运行时系统的功能,可以通过单播、多播或广播发送消息。 |
支持的平台/设备 | 提示使用 |
限制 |
|
附加组件 | CODESYS OPC UA PubSub SL |
注意
下载 项目